function init() {
//...
}
// jquery시절
$(function() {
init();
});
// 지금은
document.addEventListener('DOMContentLoaded', () => {
init();
});
아래 방식도 오래됨, 이벤트 네이밍 컨벤션이 지금은 바뀐 것을 알 수 있다.
이걸 쓰지 마라. 왜?
[[Pasted image 20221024081432.png]]
처음엔 괜찮은데 나중에 analytics등으로 밑에 스크립트가 자동으로 붙게 되면..?
일단 tldr은 defer
을 써라 DOMReady쓰지 마라
스펙을 보면
module script는 deferred가 기본
그럼 왜 생겼나?
1997 IE4에서 생긴기능. 버그가 있었다.
순서는 1,3,2...?
15년동안 안고쳐짐. IE10에서 고쳐짐
animation이나 content가 많은 경우 defer는 성능을 오히려 저하시킬 수 있다. 이전에 페이지를 보여주고 애니메이션을 보여주고싶다면
필요한 경우 비동기 요청 async를 쓰자.
근데 비동기다보니까 너무 queue뒤쪽으로..
크롬에는 fetchpriority
생김
console.log(this.innerHTML)
이 connectedCallback
에 있으면?
async라서 어떤게 먼저 로딩되냐에 따라 다름.
parser가 처리를 어떻게 하냐...
this element is complete 라는 개념이 없음..
custom-element를 내부에 넣어서 이벤트 연결을 알 수 있는 hack.